home *** CD-ROM | disk | FTP | other *** search
/ F1 Licenseware / F1 Licenseware - Volume 1.iso / disks / 079c.dms / 079c.adf / weapons_control.lha / WEAPON_CONTROL / WEAPON_CONTROL.amos / WEAPON_CONTROL.amosSourceCode
AMOS Source Code  |  1992-02-26  |  4KB  |  168 lines

  1. '*********************************** 
  2. '
  3. '       SHOOTING GAME ENGINE   
  4. '       -------------------- 
  5. '
  6. '     BY MALCOLM LAVERY ï¿½1994
  7. '
  8. '**********************************
  9. '
  10. '**************************
  11. '  LOAD SOME AMOS BANKS
  12. '**************************
  13. '
  14. If Length(1)=0 : Load "sprites.abk",1 : End If 
  15. If Length(5)=0 : Load "samples.abk",5 : End If 
  16. '
  17. '*************************** 
  18. '  OPEN DEFAULT SCREEN 
  19. '*************************** 
  20. '
  21. Screen Open 0,320,256,32,Lowres
  22. Curs Off : Flash Off : Hide On : Cls 0
  23. Palette $5,$FFF,$0
  24. '
  25. '*************************** 
  26. '   SET SOME VARIABLES 
  27. '*************************** 
  28. '
  29. AMOUNT=5 : Rem ***** WEAPON TYPES ***** 
  30. '
  31. Dim NAME$(AMOUNT),WEAPON(AMOUNT),ROUNDS(AMOUNT),RECOIL(AMOUNT),PITCH(AMOUNT)
  32. '
  33. '**************************
  34. '    WEAPON STATISTICS 
  35. '**************************
  36. '  
  37. '       1=MACHINE GUN
  38. '       2=HAND GUN 
  39. '       3=RIFLE
  40. '       4=ROCKET 
  41. '       5=PHOTON TOPEDO
  42. '
  43. NAME$(1)="MACHINE GUN (YEH!,SPLAT EM!)" : WEAPON(1)=4 : ROUNDS(1)=10 : RECOIL(1)=60 : PITCH(1)=20000
  44. NAME$(2)="HAND GUN (FAST!,BUT CRAP!)" : WEAPON(2)=5 : ROUNDS(2)=50 : RECOIL(2)=20 : PITCH(2)=10000
  45. NAME$(3)="RIFLE (POWER!,BUT SLOW!)" : WEAPON(3)=6 : ROUNDS(3)=20 : RECOIL(3)=50 : PITCH(3)=11000
  46. NAME$(4)="ROCKETS (MEAN DOODS)" : WEAPON(4)=7 : ROUNDS(4)=8 : RECOIL(4)=100 : PITCH(4)=8000
  47. NAME$(5)="PHOTON TOPEDOS (YEH RIGHT!)" : WEAPON(5)=8 : ROUNDS(5)=30 : RECOIL(5)=150 : PITCH(5)=5000
  48. '
  49. WEAPON=2
  50. RECOIL=0
  51. '
  52. _CHANGE_WEAPON
  53. '
  54. '**************************
  55. '
  56. _CENTRE_TEXT[110,"LEFT MOUSE BUTTON TO FIRE"]
  57. _CENTRE_TEXT[120,"RIGHT MOUSE BUTTON CHANGES WEAPON"]
  58. '
  59. Global NAME$(),WEAPON(),ROUNDS(),RECOIL(),PITCH(),WEAPON,RECOIL
  60. '
  61. '********************************************* 
  62. '              MAIN GAME LOOP
  63. '********************************************* 
  64. '
  65. Do 
  66.    '
  67.    '***** FIRE CURRENT WEAPON ***** 
  68.    '
  69.    If Mouse Key=1 and RECOIL=0
  70.       _FIRE_WEAPON
  71.    End If 
  72.    '
  73.    '***** CHANGE WEAPON TEST ONLY ***** 
  74.    '
  75.    If Mouse Key=2
  76.       Inc WEAPON
  77.       If WEAPON>5
  78.          WEAPON=1
  79.       End If 
  80.       _CHANGE_WEAPON
  81.       Wait 20
  82.    End If 
  83.    '
  84.    '***** UPDATE SIGHTS ***** 
  85.    '
  86.    _SIGHTS
  87.    '
  88.    '***** RESET WEAPONS RECOIL *****  
  89.    '
  90.    If RECOIL>0
  91.       Dec RECOIL
  92.    End If 
  93.    '
  94.    '******** SCREEN UPDATE *********
  95.    '
  96.    Wait Vbl 
  97.    '
  98. Loop 
  99. '
  100. '************************* 
  101. '    GAME PROCEDURES 
  102. '************************* 
  103. '
  104. Procedure _SIGHTS
  105.    '
  106.    X=X Screen(X Mouse)
  107.    Y=Y Screen(Y Mouse)
  108.    '
  109.    Bob 1,X,Y,2
  110.    '
  111. End Proc
  112. Procedure _FIRE_WEAPON
  113.    '
  114.    '*********** FIRE CURRENT WEAPON IF IT HAS AMMO ************** 
  115.    '*********** AND WEAPON HAS RECOILED ************************* 
  116.    '
  117.    If ROUNDS(WEAPON)>0
  118.       '
  119.       Sam Play %1000,WEAPON(WEAPON),PITCH(WEAPON)
  120.       '
  121.       '********* DECREASE WEAPONS AMMO *********** 
  122.       '
  123.       Dec ROUNDS(WEAPON)
  124.       RECOIL=RECOIL(WEAPON)
  125.       '
  126.       _AMMO
  127.       '
  128.       '******************************************* 
  129.       '
  130.    End If 
  131.    '
  132.    '************************************************************
  133.    '
  134. End Proc
  135. Procedure _CHANGE_WEAPON
  136.    '
  137.    RECOIL=0
  138.    '
  139.    _AMMO
  140.    '
  141.    _CENTRE_TEXT[10,NAME$(WEAPON)]
  142.    '
  143. End Proc
  144. Procedure _CENTRE_TEXT[Y,TEX$]
  145.    '
  146.    LE=Text Length("       "+TEX$+"       ")/2
  147.    '
  148.    Ink 0,0
  149.    Text 320/2-LE,Y,"       "+TEX$+"       "
  150.    '
  151.    Gr Writing 0
  152.    '
  153.    Ink 2,0
  154.    Text 320/2-LE+2,Y+1,"       "+TEX$+"       "
  155.    '
  156.    Ink 1,0
  157.    Text 320/2-LE,Y,"       "+TEX$+"       "
  158.    '
  159.    Gr Writing 1
  160.    '
  161. End Proc
  162. Procedure _AMMO
  163.    '
  164.    Ink 1,0
  165.    '
  166.    _CENTRE_TEXT[250,"AMMO LEFT "+Mid$(Str$(ROUNDS(WEAPON)),2)]
  167.    '
  168. End Proc